﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//strlen的使⽤和模拟实现
//size_t my_strlen(const char* str)
//{
//	size_t ret = 0;
//	while ((*str) != '\0')//不能直接写\0
//	{
//		ret++;
//		str++;
//	}
//	return ret;
//}

//size_t my_strlen(const char* str)
//{
//	char* start = str;
//	while (*str != '\0')
//		str++;
//	char* end = str;
//	size_t ret = end - start;
//	return ret;
//}

//size_t my_strlen(const char* str)
//{
//	if (*str != '\0')
//	{
//		return 1 + my_strlen(str + 1);
//	}
//	else
//	{
//		return 0;
//	}
//}
//
//int main()
//{
//	char arr[] = "abc";
//	size_t ret = my_strlen(arr);
//	printf("%zd\n", ret);
//	return 0;
//}

//strcpy的使⽤和模拟实现
//char* my_strcpy(char* destination, const char* source)
//{
//	char* tmp = destination;
//	while (*source != '\0')
//	{
//		*destination = *source;
//		destination++;
//		source++;
//	}
//	*destination = '\0';
//	return tmp;//不能返回destination
//}
//int main()
//{
//	char arr[] = "abcd";
//	char cpy[50] = { '0' };//赋值要加大括号
//	/*int i = 0;
//	for (i = 0; i < 20; i++)
//	{
//		printf("%c ", cpy[i]);
//	}*/
//	//打印字符串
//	printf("%s\n", my_strcpy(cpy, arr));
//	return 0;
//}

//strcat的使⽤和模拟实现
char* my_strcat(char* destination, const char* source)
{
	char* ret = destination;
	while (*destination != '\0')
		destination++;
	while (*source != '\0')
	{
		*destination = *source;
		destination++;
		source++;
	}
	*destination = '\0';
	return ret;
}

int main()
{
	char arr1[20] = "ab c ";
	char arr2[] = "def";
	printf("%s\n", my_strcat(arr1, arr2));
	return 0;
}

//strcmp的使⽤和模拟实现
//int my_strcmp(const char* str1, const char* str2)
//{
//	while (*str1 != '\0' || *str2 != '\0')
//	{
//		if (*str1 == *str2)
//		{
//			str1++;
//			str2++;
//		}
//		else
//		{
//			return *str1 - *str2;
//		}
//	}
//}
//
//int main()
//{
//	char arr1[] = "a";
//	char arr2[] = "a";
//	int ret = my_strcmp(arr1, arr2);
//	printf("%d\n", ret);
//	return 0;
//}